/**
 * 冒泡排序
 *      算法思想：r[i]和r[i+1]比较，如果 r[i] > r[i+1]则互换位置，一趟遍历结束后，最大的元素被排序到了末尾
 *              这时有序表 在尾部长度为 1，无序表在前长度为 n - 1，
 *              循环上面的操作 直到 有序表的长度 为 n - 1，结束排序
 * @param {*} list  待排序的数据列表
 */
function bubleSrot(list) {
    let i, x, len = list.length, j = len, lastChangeIndex
    while (j > 0) {
        lastChangeIndex = 0
        for (i = 0; i < j; i++) {
            if (list[i] > list[i + 1]) {
                x = list[i]
                list[i] = list[i + 1]
                list[i + 1] = x
                lastChangeIndex = i
            }
        }
        j = lastChangeIndex
    }    
    console.log(list)
    return list                   
}

bubleSrot([5,4,6,2,10,100,58,-1])